このマニュアルでは、Microsoft の OLE DB.NET Data Provider を使用して C#
プロジェクトから SQL Anywhere データベースへの接続を作成する方法について説明します。
はじめに
Microsoft OLE DB.NET Data Provider を SQL Anywhere Native OLE DB Provider
とともに使用することにより、マネージド .NET アプリケーションは SQL Anywhere
データベースへの標準化されたアクセスを得ることができます。あるいは、よりパフォーマンスの高い統合ソリューションとして
SQL Anywhere .NET Data Provider の使用を検討することもできます。
必要なソフトウェア
- SQL Anywhere 11.x
- SQL Anywhere サンプル・データベース (demo.db)
- Microsoft Visual Studio 2008
手順
- 1. Visual Studio 2008 を起動します。
- 2. 新規プロジェクトを作成します。
a. [ファイル] メニューから [新規作成] > [プロジェクト] を選択します。 [新しいプロジェクト] ダイアログが表示されます。
b. 左ペインで [Visual C#] を選択します。
c. 右ペインで [コンソール アプリケーション] を選択します。
d. [名前] フィールドに CustomerDataReader と入力します。
e. [場所] フィールドに c:\temp と入力します。
f. [OK] をクリックして [新しいプロジェクト] ダイアログを閉じます。
h. 以下の using 指令をコード・ファイルの一番上にあるリストに追加します。System.Data.OleDB ネームスペースには、データベース接続に必要な ADO.NET クラスがすべて含まれています。コード・ファイルは以下のようになります。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.OleDB;
namespace CustomerDataReader
{
class Program
{
static void Main(string[] args)
{
}
}
}
i. 以下のコードを static void Main(string[] args) メソッドにコピーします。
//Create a connection OleDbConnection myConnection = new OleDbConnection(
@"Data Source=SQL Anywhere 11 Demo;Provider=SAOLEDB.11"); //open
the connection myConnection.Open(); //Create a command object. OleDbCommand
myCommand = myConnection.CreateCommand(); //Specify a query myCommand.CommandText
= "Select GivenName, Surname FROM Customers" //Create a DataReader
for the command OleDbDataReader myDataReader = myCommand.ExecuteReader();
//Display the resulting Data while (myDataReader.Read())
{
Console.WriteLine("{0} {1}", myDataReader["GivenName"] myDataReader["Surname"]);
}
//Close the DataReader. myDataReader.Close(); //Close the connection myConnection.Close();
//Keep the console open until a keystroke. Console.ReadKey(true);
j. [F5] を押してプロジェクトを実行します。以下のような名前のリストが表示されます。
Michaels Devlin Beth Reiser Erin Niedringhaus Meghan Mason Laura McCarthy
Paul Phillips
Kelly Colburn ....
k. 任意のキーを押して、コンソール・ウィンドウを閉じます。
アプリケーションの仕組み
OleDbConnection オブジェクトの作成
OleDbConnection オブジェクトは、他の ADO.NET オブジェクトを使用する前に初期化する必要があります。OleDbConnection
オブジェクトは、アプリケーションとデータベース・プロバイダ (この場合は
SAOLEDB.11) 間の接続を作成します。ユーザは残りの接続文字列を渡す必要があり、この接続文字列はデータ・ソースに含めることができます。データベース・サーバがすでに動作している場合は、ユーザ
ID とパスワードを渡すだけで構いません。接続文字列は以下のようになります。
OleDbConnection myConnection = new OleDbConnection (@"Provider=SAOLEDB.11;UID=DBA;PWD=sql");
DSN を使わずにデータベース・サーバを実行する際にアプリケーションからデータベース・サーバを起動する必要がある場合、接続文字列は以下のようになります。
OLEDbConnection myConnection = new OleDbConnection (@"Provider=SAOLEDB.11;UID=dba;PWD=sql;DBF=C:\MyDB.db");
'@' 記号を接続文字列の前に置くと、ファイル名にバックスラッシュを使用することができます。そうしない場合は、C# 文字列内のバックスラッシュ文字をエスケープするために二重のバックスラッシュが必要になります。
Connection オブジェクトを開く
.NET アプリケーションとプロバイダ間の接続を開くには、このメソッドが必要です。このメソッドが失敗した場合は、例外がスローされます
(System.Data.OleDb.OleDbException) myConnection.Open();
クエリ文の指定
接続が正常に開いたら、SQL 文を発行できます。まず、データベース操作を実行するために
Command オブジェクトを作成する必要があります。Command オブジェクトを作成したら、CommandText
プロパティを設定してください。顧客の特定の名前と姓をフェッチするために、その
SQL 文を Command オブジェクトの CommandText プロパティに渡します。
OleDbCommand myCommand = myConnection.CreateCommand(); myCommand.CommandText
= "SELECT GivenName, Surname FROM Customers";
データの読み取り
この例では、DataReader オブジェクトを使用してクエリの結果をすぐに取得します。これは、読み取り専用のオブジェクトですので、データを更新することはできません。DataReader
の Read メソッドは、ローを 1 つずつ読み取り、読み取るデータがある間は true
を返し、読み取るデータがなくなったら false を返します。
while ( myDataReader.Read()) {
Console.WriteLine("{0} {1}", myDataReader["GivenName"],
myDataReader["Surname"]); }
クリーンアップ
最後に、DataReader オブジェクトと Connection オブジェクトを閉じます。
myDataReader.Close(); myConnection.Close();
|